################################################################################
#
#   A custom Bullet class :
#
################################################################################







################################################################################
#   The CUSTOM_BULLET_APPEARANCE class :
################################################################################
class CustomBulletAppearance

  attr_accessor :image, :rect



  def initialize(bulletAppearanceElement)

    @image  = nil
    @rect   = nil

    bulletAppearanceElement.elements.each do |element|
      if element.name == 'sprite' then
        @image, @rect = loadImage(element.text, -1)
      else
        print "Unknown element in <bulletAppearance> element : #{element.name}. Skipping.\n"
      end
    end

  end



  def inspect

    if (@image != nil) and (@rect != nil) then
      print "this a sprite storing cumstom BulletAppearance class. It looks like bitmap data has been succesfully loaded.\n"
    else
      print "this a sprite storing cumstom BulletAppearance class. It looks like no bitmap data has been loaded yet.\n"
    end

  end

end ### End of the CUSTOM_BULLET_APPEARANCE class ##############################







################################################################################
#   The CUSTOMBULLET class :
################################################################################
class CustomBullet < BulletRunner

  def initialize(fireElement, parent, source, params, appearance)

    super(fireElement, parent, source, params)

    @image        = appearance.image
    @rect         = appearance.rect

    @half_width   = @rect[2]/2.0.to_i
    @half_height  = @rect[3]/2.0.to_i

  end



  def draw

    @image.blit(@source.controller.screen, [@x-@half_width,@y-@half_height], @rect)

  end

end
